package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 转换流:InputStreamRead和OutputStreamWriter,它们继承自Reader和Writer
 * 转换流是非常常用的字符流实现类,但实际开发中我们不会直接操作这两个流,
 * 但是它们在我们的流连接中是非常重要的一环,
 *
 * 在流连接中的意义:
 * 由于其它字符流在流连接中要求只能连接在其它字符流上,而不能直接连接在字节流上
 * 原因:字符流是以字符为单位读写,而字节流是以字节为单位读写,
 *      读写单位不同,因此不能直接串连在一起工作
 * 转换流是一对字符流,并且是唯一可以直接连接在字节流上的字符流
 * 因此其它字符流都只能连接在转换流上,而转换流再连接在字节流上,实现串联起写读写
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("osw.txt");
        //创建转换流是通常会指定第2个参数;来明确字符集,以此来保证跨平台
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
        osw.write("若你早与她人两心同,何苦惹我错付了情衷...");
        osw.write("难道看我失魂落魄你竟然心动?");
        System.out.println("写出完毕!");
        osw.close(); //关闭高级流时会自动关闭低级流
    }
}
